Installation
Installationâ
Run the one-line installer with your configuration file:
curl -sSL https://raw.githubusercontent.com/couchbaselabs/couchbase-fhir-ce/master/install.sh | bash -s -- ./config.yaml
The installer will:
- Download the required configuration files
- Verify file integrity with checksums
- Pull the latest Docker images
- Start all services (FHIR server, web interface, load balancer)
- Display the access URL
ec2-user@ip-172-31-25-234 ~ $ curl -sSL https://raw.githubusercontent.com/couchbaselabs/couchbase-fhir-ce/master/install.sh | bash -s -- ./config.yaml
đ Couchbase FHIR CE Installer
â
Using: docker-compose
â
Using config file: ./config.yaml
đ Installation directory: /home/ec2-user/couchbase-fhir-ce
đ Creating logs directory...
đĻ Pulling configuration generator...
latest: Pulling from couchbaselabs/couchbase-fhir-ce/fhir-generator
Digest: sha256:33ce2953c74b8c91298d708f71229484711f6bc949d99e5008b38872fb0e1e19
Status: Image is up to date for ghcr.io/couchbaselabs/couchbase-fhir-ce/fhir-generator:latest
ghcr.io/couchbaselabs/couchbase-fhir-ce/fhir-generator:latest
đ§ Generating docker-compose.yml and haproxy.cfg...
đ Reading configuration: config.yaml
đ Base URL: http://ec2-35-94-15-196.us-west-2.compute.amazonaws.com/fhir
đĒ Ports: HTTP=80, HTTPS=443
đ TLS: Disabled
đž JVM Memory: 12g - 12g
đŗ Generating docker-compose.yml...
â
Generated: docker-compose.yml
đ Generating haproxy.cfg...
â
Generated: haproxy.cfg
â
Generation complete!
đ Next steps:
docker-compose up -d
â
Configuration files generated
đĨ Downloading management scripts...
â
Scripts downloaded
đĻ Pulling FHIR server images...
[+] Pulling 3/3
â fhir-server Pulled 0.4s
â fhir-admin Pulled 0.3s
â haproxy Pulled 0.7s
đ Starting services...
[+] Running 4/4
â Network couchbase-fhir-ce_default Created 3s
â Container fhir-server Started 8s
â Container fhir-admin Started 8s
â Container haproxy Started 3s
âŗ Waiting for services to start...
â
Couchbase FHIR CE is now running!
đ Access URL: http://ec2-35-94-15-196.us-west-2.compute.amazonaws.com
đ Useful Commands:
cd couchbase-fhir-ce
View logs: docker compose logs -f
Stop: docker compose down
Restart: docker compose restart
Status: docker compose ps
Update: Edit config.yaml, then: ./scripts/apply-config.sh config.yaml
đ Documentation:
https://fhir.couchbase.com/docs/intro
What Gets Installedâ
The installer creates a couchbase-fhir-ce directory containing:
3 Docker containers:
fhir-server- FHIR API backend (Spring Boot)fhir-admin- Web-based administration interfacehaproxy- Load balancer and reverse proxy
Configuration files:
docker-compose.yml- Container orchestrationhaproxy.cfg- Load balancer configurationconfig.yaml- Your Couchbase connection settingsscripts/apply-config.sh
Accessing the Serverâ
After installation, the FHIR server will be available at:
- AWS EC2
- Local/Other
http://your-ec2-hostname.compute-1.amazonaws.com
http://localhost
The installer automatically detects your environment and displays the correct URL.
Managing the Installationâ
Navigate to the installation directory to manage services:
cd couchbase-fhir-ce
- View Logs
- Control Services
- Update
docker-compose logs -f
docker-compose logs -f fhir-server
docker-compose logs -f fhir-admin
ec2-user@ip-172-31-25-234 ~/couchbase-fhir-ce $ docker compose logs -f fhir-server
fhir-server | Picked up JAVA_TOOL_OPTIONS: -Xms12g -Xmx12g -XX:+UseG1GC -XX:MaxGCPauseMillis=200
fhir-server | 19:01:14,936 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [FILE] not referenced. Skipping further processing.
fhir-server | 19:01:14,937 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [SDK_FILE] not referenced. Skipping further processing.
fhir-server |
fhir-server | . ____ _ __ _ _
fhir-server | /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
fhir-server | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
fhir-server | \\/ ___)| |_)| | | | | || (_| | ) ) ) )
fhir-server | ' |____| .__|_| |_|_| |_\__, | / / / /
fhir-server | =========|_|==============|___/=/_/_/_/
fhir-server |
fhir-server | :: Spring Boot :: (v3.5.0)
fhir-server |
fhir-server | 2025-12-24T19:01:26.337Z ERROR No active connection found for: default (available: [])
fhir-server | 2025-12-24T19:01:26.344Z INFO đĒĩ Logging level override: com.couchbase.admin.config.service.ConfigurationStartupService -> INFO
fhir-server | 2025-12-24T19:01:26.345Z INFO đ§ Couchbase SDK configuration: Using SDK defaults (no overrides in config.yaml)
fhir-server | 2025-12-24T19:01:26.345Z INFO đ FHIR Server base URL: http://ec2-35-94-15-196.us-west-2.compute.amazonaws.com/fhir
fhir-server | 2025-12-24T19:01:26.345Z INFO đ Admin UI credentials loaded from config.yaml
fhir-server | 2025-12-24T19:01:26.345Z INFO âšī¸ CORS configuration is managed in application.yml (default: allow all origins)
fhir-server | 2025-12-24T19:01:26.345Z INFO đ Attempting auto-connection to: ec2-54-69-205-199.us-west-2.compute.amazonaws.com (Server)
fhir-server | 2025-12-24T19:01:27.318Z INFO â
Auto-connection successful!
fhir-server | 2025-12-24T19:01:27.318Z INFO đ Initializing OAuth signing key...
fhir-server | 2025-12-24T19:01:27.385Z INFO đ Loading active JWT tokens into cache...
fhir-server | 2025-12-24T19:01:27.392Z INFO â
Token cache initialized with 1 active tokens
fhir-server | 2025-12-24T19:01:27.405Z INFO ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
fhir-server | 2025-12-24T19:01:27.406Z INFO â FHIR SYSTEM INITIALIZATION STATUS â
fhir-server | 2025-12-24T19:01:27.406Z INFO ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
fhir-server | 2025-12-24T19:01:27.406Z INFO đ Status: READY
fhir-server | 2025-12-24T19:01:27.406Z INFO đĻ Bucket: fhir
fhir-server | 2025-12-24T19:01:27.406Z INFO đ Connection: â
Connected
fhir-server | 2025-12-24T19:01:27.406Z INFO đĒŖ Bucket Exists: â
Yes
fhir-server | 2025-12-24T19:01:27.406Z INFO âī¸ FHIR Initialized: â
Yes
fhir-server | 2025-12-24T19:01:27.406Z INFO âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
fhir-server | 2025-12-24T19:01:27.406Z INFO â
FHIR system is fully initialized and ready.
fhir-server | 2025-12-24T19:01:27.406Z INFO đ Backend startup complete - FHIR APIs are now available
fhir-server | 2025-12-24T19:01:27.406Z INFO đĄ Collections will be warmed up automatically on first access
fhir-server | 2025-12-24T19:01:27.406Z INFO ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
fhir-server | 2025-12-24T19:01:27.407Z WARN ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
fhir-server | 2025-12-24T19:01:27.407Z WARN â TOMCAT THREAD POOL CONFIGURATION â
fhir-server | 2025-12-24T19:01:27.407Z WARN ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
fhir-server | 2025-12-24T19:01:27.407Z WARN đ Virtual Threads: ENABLED (Java 21+)
fhir-server | 2025-12-24T19:01:27.407Z WARN â
Thread pool limits no longer apply
fhir-server | 2025-12-24T19:01:27.407Z WARN â
Can handle 1000+ concurrent connections efficiently
fhir-server | 2025-12-24T19:01:27.407Z WARN ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
fhir-server | 2025-12-24T19:01:27.407Z WARN đ Max Threads: 200
fhir-server | 2025-12-24T19:01:27.407Z WARN đ Min Spare Threads: 10
fhir-server | 2025-12-24T19:01:27.407Z WARN đ Accept Count (Queue): 100
fhir-server | 2025-12-24T19:01:27.407Z WARN đ Max Connections: 10000
fhir-server | 2025-12-24T19:01:27.407Z WARN đ Connection Timeout: 20000
fhir-server | 2025-12-24T19:01:27.407Z WARN đ Max Keep-Alive Requests: 100
fhir-server | 2025-12-24T19:01:27.407Z WARN ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
docker-compose down
docker-compose up -d
docker-compose restart
docker-compose ps
# Stop current installation
docker-compose down --rmi all
cd ..
rm -rf couchbase-fhir-ce
# Run installer again
curl -sSL https://raw.githubusercontent.com/couchbaselabs/couchbase-fhir-ce/master/install.sh | bash -s -- ./config.yaml
Configuration Managementâ
The docker-compose.yml and haproxy.cfg files are auto-generated by the installer. Do not edit them manually. Any changes will be overwritten the next time configuration is applied.
To change settings, edit config.yaml in the couchbase-fhir-ce folder and run the apply script:
cd couchbase-fhir-ce
# Edit your configuration
nano config.yaml
# Re-generate docker-compose.yml and haproxy.cfg
./scripts/apply-config.sh ./config.yaml
# Optionally restart services to apply changes
docker compose restart
Common configuration changes:
- Change logging levels
- Change JVM memory settings
- Change FHIR baseUrl
- Change Couchbase connection settings
- Add TLS/HTTPS support (see: Enable TLS/HTTPS)
Ports and Networkingâ
The installation exposes only port 80 externally through HAProxy, which routes traffic to the appropriate services:
/- Web administration interface/fhir/*and/api/*- FHIR API endpoints
Internal container ports (not exposed):
fhir-server: 8080fhir-admin: 80haproxy: 80 (mapped to host port 80)
Security Considerationsâ
- The installer verifies file integrity using SHA256 checksums
- Only downloads configuration files and official container images
- No executable code is downloaded from external sources
- All containers run with non-root users where possible
Supported Platformsâ
The installer supports:
- AWS EC2 (automatic hostname detection)
- Google Cloud Platform (automatic IP detection)
- Microsoft Azure (automatic IP detection)
- Local development (localhost)
- Any Linux/macOS system with Docker
Troubleshootingâ
- Permission Issues
- Connection Issues
- Container Issues
- Port Conflicts
Installation fails with permission denied:
# Add user to docker group and restart session
sudo usermod -a -G docker $USER
# Log out and back in, then try again
Cannot connect to Couchbase:
- Verify your
config.yamlconnection details - Check network connectivity to your Couchbase server
- Ensure the Couchbase user has appropriate permissions
Containers fail to start:
cd couchbase-fhir-ce
docker-compose logs
Port 80 already in use:
# Check what's using port 80
sudo lsof -i :80
# Stop conflicting services or change port mapping in docker-compose.yml
System Requirementsâ
- Memory: 2GB RAM minimum (4GB recommended)
- Storage: 500MB for Docker images
- Network: Internet access for image downloads
- Platform: Linux (x64/ARM64), macOS (Intel/Apple Silicon)